package org.ww.algorithm.sort;

import java.util.ArrayList;
import java.util.Arrays;

/**
 * 冒泡排序：
 *      依次比较相邻的两个元素，逆序就交换位置
 *      优化：如果一趟排序下来没有发生交换，表明现在序列是有序的，可以用一个标志位进行标识flag
 */
public class BubbleSort {

    public static void main(String[] args) {
        Integer[] data=new Integer[]{2,1,3,4,5,6};
        bubble(data);
        System.out.println("排序后的数组："+Arrays.asList(data));
    }

    public static void bubble(Integer[] data){

        boolean flag=false;
        for(int i=0;i<data.length;i++){
            for(int j=0;j<data.length-i-1;j++){
                if(data[j]>data[j+1]){
                    int temp=data[j];
                    data[j]=data[j+1];
                    data[j+1]=temp;
                    //优化
                    flag=true;
                }
            }
            System.out.println("遍历"+(i+1)+"次");
            if(!flag){
                break;
            }else {
                flag=false;
            }
        }
    }
}
